<?php

namespace App\Http\Middleware;

use Closure;

class CheckAdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param string $param 中间件传参 在绑定中间件地方:值
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        //用户是否登录检测
        if (!auth()->check()){
            return redirect(route('admin.login'))->withErrors(['error'=>'请登录!']);
        }
        //读取用户登录的全部权限
        $authArr = is_array(session('admin.auth')) ? array_filter(session('admin.auth')) : [];
        //无需权限就可以访问的页面
        $allowAuth = config('rbac.allow_route');
        //全部权限
        $auths = array_merge($authArr,$allowAuth);
        //当前访问的路径
        $auth = $request->route()->getName();
        $request->auths = $auths;
        //权限判定
        if (!in_array($auth,$auths) && config('rbac.super') != auth()->user()->username){
            exit("没有权限访问");
        }
        //没有停止则向后执行
        return $next($request);
    }
}
